package com.xbongbong.pro.paymenttask.pojo.dto;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xbongbong.paas.domain.entity.ext.ConditionsEntityExt;
import com.xbongbong.paas.toolbox.wrap.BaseDTO;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

/**
 * @author: 汪腾伟
 * @date: 2020/8/5
 * @desrcption: 用于做查询的回款计划实体类
 * @version:1.0
 */
@Getter
@Setter
@ToString
public class PaymentTaskGetDTO extends BaseDTO {

    private static final long serialVersionUID = -8083445547235088478L;
    /**
     * 类型，付款单/回款单
     */
    private Integer businessType;

    /**
     * 回款计划formId
     */
    private Long formId;

    /**
     * 目前指的是合同订单id
     */
    private Long dataId;

    /**
     * saas标记，1saas，2paas
     */
    private Integer saasMark;

    /**
     * 列表页范围筛选
     */
    private JSONObject rangeScreen;

    /**
     * 客户姓名或联系电话的搜索
     */
    private String nameLike;

    /**
     * 回款计划筛选 0:未完成 1:已完成
     */
    private Integer status;

    /**
     * 分组 0:全部  21:我执行的  22:下属执行的
     */
    private Integer listGroupId;

    /**
     * 执行人员或部门
     */
    private String pid;
    /**
     * 人员或部门
     */
    private String treeType;

    /**
     * 日期
     */
    private String date;

    /**
     * 字段筛选
     */
    private List<String> fieldList = null;

    private Integer page = 1;

    private Integer pageSize = 20;

    /**
     * 开始时间
     */
    private long startTime;

    /**
     * 结束时间
     */
    private long endTime;

    /**
     * 操作类型
     * 1：回款计划列表查询
     * 2：合同订单去查询关联的回款信息
     */
    private int operateType;

    /**
     * 执行人的用户列表
     */
    private List<String> userIdList;

    /**
     * 条件是否解析过 0:未解析 1:解析
     */
    private int conditionAnalyse;

    /**
     * 导出时的回款计划区间
     */
    private JSONArray planDateArr;

    private Integer subBusinessType;

    /**
     * 查询条件
     */
    private List<ConditionsEntityExt> conditions = new ArrayList<>();

    public void setPage(Integer page) {
        if (Objects.isNull(page)){
            return;
        }
        this.page = page;
    }

    public void setPageSize(Integer pageSize) {
        if (Objects.isNull(pageSize)){
            return;
        }
        this.pageSize = pageSize;
    }

}
